The notion of a transaction is an important concept for transactional systems, such as database management systems, recoverable file systems and transaction-based operating systems. Briefly stated, a transaction is an action or set of actions that guarantees the ACID (Atomicity, Consistency, Isolation and Durability) properties. Transactional logging involves maintaining a persistent transactional log that records a time serial history of transactions in a system. A transactional log provides information for restoring a system to a consistent state that existed prior to a system failure.
A traditional transactional logging system uses a dedicated log to support a single log client. The log client communicates with the transactional logging system to ensure that the client's log records are properly written to the dedicated log. This type of transactional logging system is typically very robust and achieves a high level of reliability. However, the inventors have determined that the high level of reliability of a single log client using a dedicated logging system may actually result in overall performance degradation for a computing environment where multiple log clients are using multiple dedicated logging systems.
One of the reasons for the performance degradation is that each dedicated logging system independently incurs input/output (I/O) overhead to write and retrieve information from its respective dedicated log. This and other I/O overhead results in adverse performance impact, and the impact is cumulative for each of the independent logging systems. An improved logging system is desirable that could overcome some of these performance problems.
However, the development of an improvement to the existing scheme of transactional logging has met several hurdles. The inventors have determined that one hurdle to an improved transactional logging system is the need to assure that a client's log records are reliably written to a transactional log by guaranteeing the availability of space in the log. A solution that offers this guarantee without incurring undue context switching and I/O overhead continues to elude those skilled in the art.